package com.zw.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zw.object.result.Result;
import com.zw.object.system.SysMenu;
import com.zw.object.vo.AssginMenuVo;
import com.zw.object.vo.RouterVo;

import java.util.List;

/**
 * <p>
 * 菜单表 服务类
 * </p>
 *
 * @author zw
 * @since 2022-12-07
 */
public interface SysMenuService extends IService<SysMenu> {

    /**
     *              获取菜单业务，树形结构
     * @return      Result
     */
    List<SysMenu> findNodes();

    /**
     *                      新增菜单业务
     * @param permission    参数实体类对象
     * @return              Result
     */
    Result saveMenu(SysMenu permission);

    /**
     *                      修改菜单业务
     * @param permission    参数实体类对象
     * @return              Result
     */
    Result updateMenu(SysMenu permission);

    /**
     *                  删除菜单
     * @param id        ID
     * @return          Result
     */
    Result deleteMenuById(String id);

    /**
     *                  根据角色ID获取菜单业务
     * @param roleId    角色ID参数
     * @return          Result
     */
    Result findMenuByRoleId(String roleId);

    /**
     *                      保存角色菜单业务
     * @param assignMenuVo  参数实体类对象
     * @return              Result
     */
    Result saveMenuByRoleId(AssginMenuVo assignMenuVo);

    /**
     *                  根据用户ID获取按钮权限值
     * @param userId    参数用户ID
     * @return          List<String>
     */
    List<String> findUserPermsList(String userId);

    /**
     *                  根据用ID获取菜单权限值
     * @param userId    参数用户ID
     * @return          List<Router>
     */
    List<RouterVo> findUserMenuList(String userId);
}
